home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / lang / Throwable.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.2 KB  |  197 lines

  1. package java.lang;
  2.  
  3. import [Ljava.lang.StackTraceElement;;
  4. import java.io.IOException;
  5. import java.io.ObjectOutputStream;
  6. import java.io.PrintStream;
  7. import java.io.PrintWriter;
  8. import java.io.Serializable;
  9.  
  10. public class Throwable implements Serializable {
  11.    private static final long serialVersionUID = -3042686055658047285L;
  12.    private transient Object backtrace;
  13.    private String detailMessage;
  14.    private Throwable cause = this;
  15.    private StackTraceElement[] stackTrace;
  16.  
  17.    public Throwable() {
  18.       this.fillInStackTrace();
  19.    }
  20.  
  21.    public Throwable(String var1) {
  22.       this.fillInStackTrace();
  23.       this.detailMessage = var1;
  24.    }
  25.  
  26.    public Throwable(String var1, Throwable var2) {
  27.       this.fillInStackTrace();
  28.       this.detailMessage = var1;
  29.       this.cause = var2;
  30.    }
  31.  
  32.    public Throwable(Throwable var1) {
  33.       this.fillInStackTrace();
  34.       this.detailMessage = var1 == null ? null : var1.toString();
  35.       this.cause = var1;
  36.    }
  37.  
  38.    public String getMessage() {
  39.       return this.detailMessage;
  40.    }
  41.  
  42.    public String getLocalizedMessage() {
  43.       return this.getMessage();
  44.    }
  45.  
  46.    public Throwable getCause() {
  47.       return this.cause == this ? null : this.cause;
  48.    }
  49.  
  50.    public synchronized Throwable initCause(Throwable var1) {
  51.       if (this.cause != this) {
  52.          throw new IllegalStateException("Can't overwrite cause");
  53.       } else if (var1 == this) {
  54.          throw new IllegalArgumentException("Self-causation not permitted");
  55.       } else {
  56.          this.cause = var1;
  57.          return this;
  58.       }
  59.    }
  60.  
  61.    public String toString() {
  62.       String var1 = this.getClass().getName();
  63.       String var2 = this.getLocalizedMessage();
  64.       return var2 != null ? var1 + ": " + var2 : var1;
  65.    }
  66.  
  67.    public void printStackTrace() {
  68.       this.printStackTrace(System.err);
  69.    }
  70.  
  71.    public void printStackTrace(PrintStream var1) {
  72.       synchronized(var1) {
  73.          var1.println(this);
  74.          StackTraceElement[] var3 = this.getOurStackTrace();
  75.  
  76.          for(int var4 = 0; var4 < var3.length; ++var4) {
  77.             var1.println("\tat " + var3[var4]);
  78.          }
  79.  
  80.          Throwable var7 = this.getCause();
  81.          if (var7 != null) {
  82.             var7.printStackTraceAsCause(var1, var3);
  83.          }
  84.  
  85.       }
  86.    }
  87.  
  88.    private void printStackTraceAsCause(PrintStream var1, StackTraceElement[] var2) {
  89.       StackTraceElement[] var3 = this.getOurStackTrace();
  90.       int var4 = var3.length - 1;
  91.  
  92.       for(int var5 = var2.length - 1; var4 >= 0 && var5 >= 0 && var3[var4].equals(var2[var5]); --var5) {
  93.          --var4;
  94.       }
  95.  
  96.       int var6 = var3.length - 1 - var4;
  97.       var1.println("Caused by: " + this);
  98.  
  99.       for(int var7 = 0; var7 <= var4; ++var7) {
  100.          var1.println("\tat " + var3[var7]);
  101.       }
  102.  
  103.       if (var6 != 0) {
  104.          var1.println("\t... " + var6 + " more");
  105.       }
  106.  
  107.       Throwable var8 = this.getCause();
  108.       if (var8 != null) {
  109.          var8.printStackTraceAsCause(var1, var3);
  110.       }
  111.  
  112.    }
  113.  
  114.    public void printStackTrace(PrintWriter var1) {
  115.       synchronized(var1) {
  116.          var1.println(this);
  117.          StackTraceElement[] var3 = this.getOurStackTrace();
  118.  
  119.          for(int var4 = 0; var4 < var3.length; ++var4) {
  120.             var1.println("\tat " + var3[var4]);
  121.          }
  122.  
  123.          Throwable var7 = this.getCause();
  124.          if (var7 != null) {
  125.             var7.printStackTraceAsCause(var1, var3);
  126.          }
  127.  
  128.       }
  129.    }
  130.  
  131.    private void printStackTraceAsCause(PrintWriter var1, StackTraceElement[] var2) {
  132.       StackTraceElement[] var3 = this.getOurStackTrace();
  133.       int var4 = var3.length - 1;
  134.  
  135.       for(int var5 = var2.length - 1; var4 >= 0 && var5 >= 0 && var3[var4].equals(var2[var5]); --var5) {
  136.          --var4;
  137.       }
  138.  
  139.       int var6 = var3.length - 1 - var4;
  140.       var1.println("Caused by: " + this);
  141.  
  142.       for(int var7 = 0; var7 <= var4; ++var7) {
  143.          var1.println("\tat " + var3[var7]);
  144.       }
  145.  
  146.       if (var6 != 0) {
  147.          var1.println("\t... " + var6 + " more");
  148.       }
  149.  
  150.       Throwable var8 = this.getCause();
  151.       if (var8 != null) {
  152.          var8.printStackTraceAsCause(var1, var3);
  153.       }
  154.  
  155.    }
  156.  
  157.    public synchronized native Throwable fillInStackTrace();
  158.  
  159.    public StackTraceElement[] getStackTrace() {
  160.       return (StackTraceElement[])this.getOurStackTrace().clone();
  161.    }
  162.  
  163.    private synchronized StackTraceElement[] getOurStackTrace() {
  164.       if (this.stackTrace == null) {
  165.          int var1 = this.getStackTraceDepth();
  166.          this.stackTrace = new StackTraceElement[var1];
  167.  
  168.          for(int var2 = 0; var2 < var1; ++var2) {
  169.             this.stackTrace[var2] = this.getStackTraceElement(var2);
  170.          }
  171.       }
  172.  
  173.       return this.stackTrace;
  174.    }
  175.  
  176.    public void setStackTrace(StackTraceElement[] var1) {
  177.       StackTraceElement[] var2 = (StackTraceElement[])((StackTraceElement;)var1).clone();
  178.  
  179.       for(int var3 = 0; var3 < var2.length; ++var3) {
  180.          if (var2[var3] == null) {
  181.             throw new NullPointerException("stackTrace[" + var3 + "]");
  182.          }
  183.       }
  184.  
  185.       this.stackTrace = var2;
  186.    }
  187.  
  188.    private native int getStackTraceDepth();
  189.  
  190.    private native StackTraceElement getStackTraceElement(int var1);
  191.  
  192.    private synchronized void writeObject(ObjectOutputStream var1) throws IOException {
  193.       this.getOurStackTrace();
  194.       var1.defaultWriteObject();
  195.    }
  196. }
  197.